As more and more services are becoming available for small or mobile devices, the number of applications running in a single device has increased significantly. Usually, a small or mobile device is used mostly for certain specific applications, while being equipped with general purpose computing capabilities. For example, it is common to find a mobile phone device that also runs a browser application, a gaming application, and a media player application, etc. On the other hand, a mobile video player device may run a gaming application and/or an email application in addition to a video application. Normally, multiple applications or processes in the same device compete with each other by sharing the same memory resources embedded inside the device.
Usually, a system monitors memory usage by multiple applications to ensure availability of a required capacity of free memory. In some systems, when memory usage reaches a critical level, the system takes memory management actions to increase the size of free memory, such as activating a garbage collection procedure to reclaim allocated memories from applications which are no longer running or less important relative to the foreground application. The system may also target a selected application, such as by simply terminating the selected application. Selecting a target application is usually based on the size or age of an application. As a result, the larger the size, the more likely an application may be terminated when memory usage is tight. However, the priority among applications in a small mobile device may not correspond to the size or age of an application. In addition, terminating an application may result in adverse user experiences on the device as a whole.